home *** CD-ROM | disk | FTP | other *** search
/ Windows News 2010 Summer - Disc 1 / WN_Ete2010_CD1.iso / Onglet5 / Weezo / Weezo setup.exe / {code_appDir} / www / includes / framesFunctions.php < prev    next >
PHP Script  |  2010-05-19  |  9KB  |  253 lines

  1. <?php
  2. /**
  3.  * Set of functions used by menu.php and background.php scripts
  4.  *
  5.  * Display XP-style menu, clock...
  6.  *
  7.  * PHP version 5
  8.  *
  9.  * LICENSE: This source file is subject to version 3.0 of the PHP license
  10.  * that is available through the world-wide-web at the following URI:
  11.  * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
  12.  * the PHP License and are unable to obtain it through the web, please
  13.  * send a note to license@php.net so we can mail you a copy immediately.
  14.  *
  15.  * @category   NA
  16.  * @package    NA
  17.  * @author     Nicolas Bruley / Peer 2 World <contact@weezo.net>
  18.  * @copyright  2005-2009 Nicolas Bruley / Peer 2 World
  19.  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
  20.  * @version    CVS: $Id:$
  21.  * @link       http://www.weezo.net
  22.  * @since      File available since Release 1.0.8
  23.  */
  24.  
  25.  
  26. /**
  27.  * @desc Return true if user may configure his account
  28.  *
  29.  * @return boolean
  30.  */
  31. function fConfigEnabled(){return cfUGetVar('accountType')==='singleUser';}
  32.  
  33. /**
  34.  * @desc Return javascript link opening user configuration window
  35.  *
  36.  * @return string
  37.  */
  38. function fConfigLink(){return "openResource('/res/administration/config/main.php','-1','".cfCaption('mainConfigButton')."','".outIcon('config3')."',{'dWW':340,'dWH':200})";}
  39.  
  40. /**
  41.  * @desc Insert HTML & JS code for displaying server time
  42.  *
  43.  * @param boolean $showSeconds : set to true to show hour:min:sec, false to chow only hour:min
  44.  */
  45. function fInsertClock($showSeconds=false){
  46. ?><span id="timeSpan" style="cursor:pointer" onclick="toggleTime()"><?php echo @date('H:i:s')?></span>
  47. <script type="text/javascript">
  48. var menuWinOpened=new Array();
  49. var dte=new Date();
  50. var timeDelta=<?php echo time()*1000;?> - dte.getTime();
  51. var timeConnected=<?php echo cfGGetVar('connectionTime')*1000;?>;
  52. var timeDisplayed='time';
  53. function twoD(number){return ((number<10)?'0'+number:number);}
  54. function showTime(showSecs){
  55.     if(!dgi("timeSpan")) return;
  56.     var d=new Date();
  57.     if(timeDisplayed=='time') d.setTime(d.getTime()+timeDelta); else d.setTime(d.getTime()+timeDelta-timeConnected);
  58.     dgi("timeSpan").innerHTML=twoD(d.getHours())+':'+twoD(d.getMinutes())+((showSecs)?':'+twoD(d.getSeconds()):'');
  59. }
  60. function toggleTime(){
  61.     timeDisplayed=((timeDisplayed=='time')?'connection':'time');
  62.     showTime(<?php echo (($showSeconds)?'true':'false'); ?>);
  63. }
  64. setInterval("showTime(<?php echo (($showSeconds)?'true':'false'); ?>)", 900);
  65. </script>
  66. <?php
  67. }
  68.  
  69. /**
  70.  * @desc Insert javascript code required for windows bar management
  71.  *
  72.  */
  73. function fInsertWindowsBar($menuWinWidth){
  74.     // Empty button
  75.     echo '<span id="winOpenedBlank" style="display:none">';
  76.     
  77.     // Prepare button for javascript replacements
  78.     $bt=outBt('CAPTION',false,'ACTION','WINID',false,false,'up',str_replace('px','',$menuWinWidth),'left');
  79.     echo str_replace('<img alt="" src="/gfx/v.gif">','IMG',str_ireplace('<s style="', '<s style="padding-left:0.4em;',str_ireplace('<s>', '<s style="">',$bt)));
  80.     echo "</span>\n";
  81.     ?>
  82. <span id="winOpened"> </span>
  83. <script type="text/javascript">
  84. <?php // Function  called on win action, through background winMonitor() function ?>
  85. function menuWin(action, id, icon, caption){
  86.     if(action=='open') menuWinOpen(id,icon,caption);
  87.     if(action=='close') menuWinClose(id,icon,caption);
  88.     if(action=='activate') menuWinActivate(id,icon,caption);
  89.     if(action=='setIcon') menuWinSetIcon(id,icon,caption);
  90.     if(action=='setCaption') menuWinSetCaption(id,icon,caption);
  91. }
  92. <?php // On window open, create menuWin item if needed ?>
  93. function menuWinOpen(id,icon,caption){
  94.     if(!menuWinOpened[id]) {
  95.         menuWinOpened[id]="notActive";
  96.         var bt=dgi('winOpenedBlank').innerHTML.replace(/CAPTION/gi, caption);
  97.         bt=bt.replace(/WINID/g, 'menu'+id);
  98.         bt=bt.replace(/href="ACTION/, "href=\"javascript:menuWinClick('"+id+"')");
  99.         bt=bt.replace(/ACTION/, "");
  100.         if(navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.indexOf('MSIE 6.0')>0)
  101.             icon='<img src='+icon.substring(icon.indexOf('src=')+4,icon.indexOf(', sizing'))+' width=16 height=16 style="border:0px;width:16px;height:16px">';
  102.  
  103.         bt=bt.replace(/IMG/g, icon.replace(/100%/gi,'16px'));
  104.         dgi('winOpened').innerHTML+=bt;
  105.         menuWinBarResized();
  106.     }
  107.     return menuWinActivate(id,icon,caption);
  108. }
  109. function menuWinActivate(id,icon,caption){
  110.     var dbg='';
  111.     for(var key in menuWinOpened) {
  112.         if(key==id) {
  113.             if(menuWinOpened[key] && menuWinOpened[key]!='Active'){
  114.                 menuWinOpened[key]='Active';
  115.                 btActivate('menu'+key);
  116.             }
  117.         }
  118.         else{
  119.             if(menuWinOpened[key] && menuWinOpened[key]!='notActive'){
  120.                 menuWinOpened[key]='notActive';
  121.                 btEnable('menu'+key);
  122.             }
  123.         }
  124.         if(menuWinOpened[key]) dbg+=key+'>'+menuWinOpened[key]+' - ';
  125.     }
  126. }
  127. function menuWinClose(id,icon,caption){
  128.     if(menuWinOpened[id]){
  129.         var n;
  130.         if(n=dgi('menu'+id)){
  131.             dgi('winOpened').removeChild(n);
  132.             menuWinBarResized();
  133.         }
  134.         menuWinOpened[id]=null;
  135.     }
  136. }
  137. function menuWinClick(id){
  138.     if(btState('menu'+id)=='up') return menuWinRequestActivation(id);
  139.     if(btState('menu'+id)=='on') {
  140.         if(win(id).state().substr(0,3)!='min'){
  141.             win(id).minimize();
  142.         }
  143.         else{
  144.             menuWinRequestActivation(id);
  145.         }
  146.     }
  147. }
  148. function menuWinRequestActivation(id){
  149.     win(id).activate();
  150. }
  151. function menuWinSetIcon(id,icon,caption){
  152.     if(!dgi('menu'+id)) return;
  153.     if(navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.indexOf('MSIE 6.0')>=0)
  154.         icon='<img src='+icon.substring(icon.indexOf('src=')+4,icon.indexOf(', sizing'))+' width=16 height=16 style="border:0px;width:16px;height:16px">';
  155.     var bt=dgi('menu'+id).innerHTML;
  156.     var btl=bt.substr(0,bt.toLowerCase().indexOf("><b>")+4)
  157.     var btr=bt.substr(bt.toLowerCase().indexOf("<s style"));
  158.     dgi('menu'+id).innerHTML=btl+icon.replace(/100%/gi,'16px;')+btr;
  159. }
  160. function menuWinSetCaption(id,icon,caption){
  161.     if(!dgi('menu'+id)) return;
  162.     btSetCaption('menu'+id,caption)
  163.     menuWinBarResized();
  164. }
  165. function menuWinBarResized(){
  166.     var wO=dgi('winOpened');
  167.     var nbWin=wO.getElementsByTagName('fieldset').length;
  168.  
  169.     if(!nbWin) return;
  170.     var r=Math.min((actualOffsetLeft(dgi('winOpenedOuter').nextSibling))<=0?9999:actualOffsetLeft(dgi('winOpenedOuter').nextSibling), D.body.offsetWidth-dgi('winOpenedOuter').nextSibling.offsetWidth) - 35;
  171.     var w=Math.max(16,Math.min((r - dgi('winOpenedOuter').previousSibling.offsetWidth)/nbWin ,150));
  172.  
  173.     for(var i=0;i<wO.getElementsByTagName('s').length;i++){
  174.         if(wO.getElementsByTagName('s')[i].style.width) wO.getElementsByTagName('s')[i].style.width=(w-16)+"px";
  175.     }
  176.     for(i=0;i<wO.getElementsByTagName('div').length;i++){
  177.         if(wO.getElementsByTagName('div')[i].style.width) wO.getElementsByTagName('div')[i].style.width=(w)+"px";
  178.     }
  179.  
  180.     for(i=0;i<dgi('winOpened').getElementsByTagName('fieldset').length;i++){
  181.         btAdjustText(dgi('winOpened').getElementsByTagName('fieldset')[i].id)
  182.     }
  183. }
  184. </script>
  185. <?php
  186. }
  187.  
  188. /**
  189.  * @desc insert background mask used for XP-Style menu click-out detection and icons click-protection
  190.  *          and menu management javascript
  191.  *
  192.  */
  193. function fInsertMenuStuff($fadeSteps=0, $maskOpacity=1){
  194. ?>
  195. <script type="text/javascript">
  196. function menuFadeInComplete(){
  197. //    dgi('menuMask').style.display="block";
  198. }
  199. function menuFadeOutComplete(){
  200.     dgi('menu').style.display="none";
  201.     maskHide();
  202. //    dgi('menuMask').style.display="none";
  203. }
  204. function menuShow(){
  205.     var m=dgi('menu'),s=m.style;
  206.     m.className="menu";
  207.     s.left=winPadding.left;
  208.     s.bottom=winPadding.bottom;
  209.  
  210.     maskShow(0,0,0,menuMaskClick);
  211.     s.visibility='hidden';
  212.     s.display='block';
  213.  
  214.     maskMoveAbove(m)
  215.  
  216.     if(dgi('menuBt')) dgi('menuBt').style.zIndex=s.zIndex*1+1;
  217.     menuShown=1;
  218.     wl.anim({'item':m,'duration':600,'extraParams':{'destH':m.offsetHeight,'destY':m.offsetTop},'callbackComplete':menuFadeInComplete,'function':
  219.         function(p,anim){
  220.             var f=wl.animFunctionUnfold2(p,anim),e=anim.extraParams;
  221.             return{'opacity':Math.min(2*p,1),'visibility':'visible','top':e.destY+(1-f)*e.destH}
  222.         }});
  223.     wl.setKeycodeListener(D,menuHide)
  224. }
  225. function menuMaskClick(){menuHide()}
  226. function menuHide(kc){
  227.     if(kc!==undefined && kc!=27) return;
  228.     wl.removeKeycodeListener(D)
  229.     
  230.     var m=dgi('menu'),b=dgi('winBarOuter');
  231.  
  232.     wl.anim({'item':m,'duration':400,'extraParams':{'startH':m.offsetHeight,'startY':m.offsetTop},'callbackComplete':menuFadeOutComplete,'function':
  233.         function(p,anim){
  234.             var f=wl.animFunctionFold2(p,anim),e=anim.extraParams;
  235.             if(p==1) return {'opacity':0,'top':e.startY}
  236.             return {'opacity':f,'top':e.startY+(1-f)*e.startH}
  237.         }});
  238.     menuShown=0;
  239.     maskHide();
  240. }
  241. function menuToggle(){if(menuShown) menuHide(); else menuShow();}
  242. function menuBtHover(){
  243.     changeImgSrc('menuBt','<?php echo cfAppThemeDir(true);?>/menuBtH.png');
  244.     changeImgSrc('menuBt','<?php echo cfAppThemeDir(true);?>/menuBtH.png');
  245. }
  246. function menuBtOut(){
  247.     changeImgSrc('menuBt','<?php echo cfAppThemeDir(true);?>/menuBt.png');
  248.     changeImgSrc('menuBt','<?php echo cfAppThemeDir(true);?>/menuBt.png');
  249. }
  250. </script>
  251. <?php
  252. }
  253. ?>